#pragma once

#include "stdafx.h"

class CEagleEyesWnd :
    public CWindowWnd,  public INotifyUI
{
public:
    CEagleEyesWnd(void);
    ~CEagleEyesWnd(void);

public:
    CPaintManagerUI m_pm;
    VOID Notify(IN TNotifyUI& msg);
    LRESULT HandleMessage( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam );
    VOID SetDriver( IN HANDLE hDriver );

protected:
    LPCTSTR GetWindowClassName() const;
    UINT GetClassStyle() const;
    VOID OnFinalMessage(HWND /*hWnd*/);
    VOID Init();
    LRESULT OnNcCalcSize( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam, OUT BOOL& bHandled );
    LRESULT OnNcHitTest( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam, OUT BOOL& bHandled );
    LRESULT OnGetMinMaxInfo( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam, OUT BOOL& bHandled );
    LRESULT OnSysCommand( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam, OUT BOOL& bHandled );
    LRESULT OnSize( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam, OUT BOOL& bHandled );
    LRESULT OnNcPaint( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam, OUT BOOL& bHandled);
    LRESULT OnNcActivate( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam, OUT BOOL& bHandled );
    LRESULT OnDestroy( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam, OUT BOOL& bHandled );
    LRESULT OnClose( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam, OUT BOOL& bHandled );
    VOID OnPrepare( VOID );
    LRESULT OnCreate( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam, OUT BOOL& bHandled );
    

private:
    CButtonUI* m_pCloseBtn;
    CButtonUI* m_pMaxBtn;
    CButtonUI* m_pRestoreBtn;
    CButtonUI* m_pMinBtn;
    
    HANDLE m_hDriver;
    PVOID m_SSDTBuffer;
    PVOID m_ShadowSSDTBuffer;
};

